/**
 * Dart实现多个接口
 */

//abstract class A {
//  printA();
//}
//
//abstract class B {
//  printB();
//}
//
//class C implements A, B {
//  @override
//  printA() {
//    print("A");
//  }
//
//  @override
//  printB() {
//    print("B");
//  }
//}

/**
 * Mixins：中文意思是混入，就是在类中混入其他功能
 *
 * 在Dart中可以使用Mixins实现类似多继承的功能
 *
 * Dart2.x使用Mixins的使用条件：
 * 1、作为Mixins的类只能继承自Object
 * 2、作为Mixins的类不能有构造函数
 * 3、一个类可以Mixins多个Mixins类
 * 4、Mixins不是继承，也不是接口，而是新的特性
 */

class A {
  String info = "This is A";

  void printA() {
    print("A");
  }
}

class B {
  void printB() {
    print("B");
  }
}

class C with A, B {}

main() {
  C c = new C();
  c.printA();
  c.printB();
  print(c.info);

  // Mixins的类型就是其超类的子类型
  print(c is A);
  print(c is B);
}
